import { CONVERSATION_ID_INFO } from '../base/chat/constants'
import { fetchAccessToken } from '@/service/share'
import { getProcessedSystemVariablesFromUrlParams } from '../base/chat/utils'

export const checkOrSetAccessToken = async () => {
    const sharedToken = globalThis.location.pathname.split('/').slice(-1)[0]
    const accessToken = localStorage.getItem('token') || JSON.stringify({ [sharedToken]: '' })
    let accessTokenJson = { [sharedToken]: '' }
    try {
        accessTokenJson = JSON.parse(accessToken)
    }
    catch (e) {

    }
    if (!accessTokenJson[sharedToken]) {
        const sysUserId = (await getProcessedSystemVariablesFromUrlParams()).user_id
        const res = await fetchAccessToken(sharedToken, sysUserId)
        accessTokenJson[sharedToken] = res.access_token
        localStorage.setItem('token', JSON.stringify(accessTokenJson))
    }
}

export const setAccessToken = async (sharedToken: string, token: string) => {
    const accessToken = localStorage.getItem('token') || JSON.stringify({ [sharedToken]: '' })
    let accessTokenJson = { [sharedToken]: '' }
    try {
        accessTokenJson = JSON.parse(accessToken)
    }
    catch (e) {

    }

    localStorage.removeItem(CONVERSATION_ID_INFO)

    accessTokenJson[sharedToken] = token
    localStorage.setItem('token', JSON.stringify(accessTokenJson))
}

export const removeAccessToken = () => {
    const sharedToken = globalThis.location.pathname.split('/').slice(-1)[0]

    const accessToken = localStorage.getItem('token') || JSON.stringify({ [sharedToken]: '' })
    let accessTokenJson = { [sharedToken]: '' }
    try {
        accessTokenJson = JSON.parse(accessToken)
    }
    catch (e) {

    }

    localStorage.removeItem(CONVERSATION_ID_INFO)

    delete accessTokenJson[sharedToken]
    localStorage.setItem('token', JSON.stringify(accessTokenJson))
}
